
/**
 * 用来限制错误提示信息次数的标志
 */
var isAlertErrorMsg = false;

/**
 * appServerUrl 生产环境服务器地址
 * isDev 是否测试环境
 */
var configData = {
    "appServerUrl": "http://127.0.0.1:9090",
    "isDev": true
};

/**
 * 改写url 使之能自动适应测试环境和生产环境
 * @param url 访问后台服务的链接 从/api/开始
 */
function getReqUrl(url) {
    if (url.charAt(0) === "/") {
        if (url.slice(0, 4) !== "/api") {
            console.error("url填写错误" + url);
            return;
        }
    } else {
        if (url.slice(0, 3) !== "api") {
            console.error("url填写错误" + url);
            return;
        }
        url = "/" + url;
    }
    return urlComplement(url);
}

/**
 * 补全传入的 url
 */
function urlComplement(url) {
    if (!configData.isDev) {
        url = url.slice(4);
    }
    console.log(url);
    return url;
}

/**
 * 用 get 方式访问后台
 * @param url 链接
 * @param successCallback 成功后的回调函数
 */
export function getData(url, successCallback) {
    url = getReqUrl(url);
    axios.get(url)
        .then(res => {
            if (res.data.code == 2000) {
                successCallback(res.data.body);
            } else {
                failCallback(res);
            }
        })
        .catch(errorInfo => {
            // 500ms 内只提示一次错误
            if (!isAlertErrorMsg) {
                isAlertErrorMsg = true;
                setTimeout(() => {
                    isAlertErrorMsg = false;
                    mainJs.vueObject.$message.error("网络错误，请检查网络连接。");
                }, 500);
            }
            closeLoading();
            console.error(errorInfo);
        });
}

/**
 * 用post 方式访问后台
 * @param url 链接
 * @param successCallback 成功后的回调函数
 */
function postData(url, params, successCallback) {
    url = getReqUrl(url);
    axios.post(url, params)
        .then(res => {
            // debugger;
            if (res.data.code == 2000) {
                successCallback(res.data.body);
            } else {
                failCallback(res);
            }
        })
        .catch(errorInfo => {
            // debugger;
            // 500ms 内只提示一次错误
            if (!isAlertErrorMsg) {
                isAlertErrorMsg = true;
                setTimeout(() => {
                    isAlertErrorMsg = false;
                    mainJs.vueObject.$message.error("网络错误，请检查网络连接。");
                }, 500);
            }
            closeLoading();
            console.error(errorInfo);
        });
}

function failCallback(res) {
    switch (res.data.code) {
        // token 超时
        case 9002:

            // 默认 弹框展示后端传回的信息
        default:
            mainJs.vueObject.$message.error("操作失败，" + res.data.msg);
    }
    closeLoading();
}

/**
 * 判断传入的是否为空字符串
 * @param {string} str 传入的字符串
 * @returns 是空串返回 true  不是空串返回false
 */
function isEmptyStr(str) {
    // debugger;
    if (str === undefined || str === null) {
        return true;
    }
    if ("string" === typeof (str) && str.length > 0) {
        return false;
    }
    return true;
}

/**
 * 将传入的 时间对象格式化为对应的字符串
 * 格式化为 年-月-日 时:分:秒
 * @param {Date} date
 */
function getFormatDate(date) {
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var seconds = date.getSeconds();

    return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
}
